<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>BIRT Report Item Extension Point</title>
<!-- default platform documentation stylesheets -->
<style>@import url("book.css");</style>
<!-- default schema documentation stylesheets -->
<style>@import url("schema.css");</style>
</HEAD>
<BODY>
<H1><CENTER>BIRT Report Item Extension Point</CENTER></H1>
<p></p>
<h6 class=CaptionFigColumn id=header>Identifier: </h6>org.eclipse.birt.model.reportItemModel<p></p>
<h6 class=CaptionFigColumn id=header>Since: </h6>1.0
<p></p>

<p>
<h6 class=CaptionFigColumn id=header>Description: </h6>Report Item extension point allows the user to specify how the new report item should be represented and persisted in the ROM</p>
<p><h6 class=CaptionFigColumn id=header>Configuration Markup:</h6></p>
<p class=code id=dtd>&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.reportItem">reportItem</a>)&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST extension</p>
<p class=code id=dtdAttlist>point&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
(no description available)</p>
<br>
<ul class=ConfigMarkup id=attlistDesc>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.reportItem">reportItem</a> (<a href="#e.property">property</a>* , <a href="#e.propertyGroup">propertyGroup</a>* , <a href="#e.styleProperty">styleProperty</a>* , <a href="#e.method">method</a>* , <a href="#e.propertyVisibility">propertyVisibility</a>* , <a href="#e.style">style</a>* , <a href="#e.overrideProperty">overrideProperty</a>*)&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST reportItem</p>
<p class=code id=dtdAttlist>extensionName&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>defaultStyle&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>isNameRequired&nbsp;(true | false) "false"<p class=code id=dtdAttlist>class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>displayNameID&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>extendsFrom&nbsp;&nbsp;&nbsp;&nbsp;CDATA "ExtendedItem"&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
Element definition</p>
<br>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>extensionName</b> - Internal unique name of the element</li>
<li><b>defaultStyle</b> - Predefined style to be used for the Report Item.</li>
<li><b>isNameRequired</b> - Field to indicate if the ReportItem instance name is required.</li>
<li><b>class</b> - Name of the java class, that implements the IReportItemFactory interface.</li>
<li><b>displayNameID</b> - Resource key for display name</li>
<li><b>extendsFrom</b> - Represent the parent element definition extending from. It can be one of the report elements defined in ROM, or group element defined in ROM, or other extensions from this point. By default, it is 'ExtendedItem'.</li>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.styleProperty">styleProperty</a> EMPTY&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST styleProperty</p>
<p class=code id=dtdAttlist>name&nbsp;CDATA #REQUIRED&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
(no description available)</p>
<br>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>name</b> - </li>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.property">property</a> (<a href="#e.choice">choice</a>* , <a href="#e.elementType">elementType</a>*)&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST property</p>
<p class=code id=dtdAttlist>name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>displayNameID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(string|number|integer|dimension|color|choice|boolean|expression|html|uri|dateTime|xml|name|float|literalString|list|resourceKey|structure|elementRef|element|contentElement) <p class=code id=dtdAttlist>detailType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>subType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(string|boolean|dateTime|float|integer|expression) "string"<p class=code id=dtdAttlist>canInherit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) "true"<p class=code id=dtdAttlist>defaultValue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>isEncryptable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) "false"<p class=code id=dtdAttlist>defaultDisplayName&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>isList&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) "false"<p class=code id=dtdAttlist>hasOwnModel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) "true"&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
(no description available)</p>
<br>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>name</b> - Internal unique name of the property extension element</li>
<li><b>displayNameID</b> - Resource key for the display name</li>
<li><b>type</b> - Property data type, such as integer or string. Generally, if property is of simple type(string, number, integer, dimension, color, boolean, expression, html, uri, dateTime, xml, name, float, literalString, resourceKey), then it is useless to set "subType" and "detailType" for the property; If type is "choice", then either define customized choices or set "detailType" to name of the preferred choice set in rom.def; If type is "list", the "subType" is required to determine the item type in the list value and by default its value is "string"; If type is "structure", "detailType" is required to refer a structure definition name in rom.def and set "isList" to true if value is not single; If type is "elementRef", "detailType" is required to refer an element definition name in  rom.def or an extension name of any report item extension; If type is "element", then set "isList" to true if the property value list is not single.
choice:
list:
structure, elementRef and element</li>
<li><b>detailType</b> - Detail data type, such as boolean or string. When the "type" is "choice", extension can define "detailType" to refer a choice set in original meta-data of Model; When "type" is "structure", extension must define "detailType" to refer a structure in original meta-data of Model.</li>
<li><b>subType</b> - When the "type" is "list", the "subType" is required and must be defined as one of the restriction choices. By default it is "string".</li>
<li><b>canInherit</b> - Flag indicating whether the property extension element can inherit
properties from another element</li>
<li><b>defaultValue</b> - Default value of the property extension element in the BIRT Report
Designer UI</li>
<li><b>isEncryptable</b> - The flag indicating whether this property is encrypted.</li>
<li><b>defaultDisplayName</b> - The default display name, which is used if no localized display name is found with I18N.</li>
<li><b>isList</b> - When "type" is "structure", you will define "isList" to indicate whether property value is a single structure or a structure list.</li>
<li><b>hasOwnModel</b> - Indicates whether the XML property should be treated as the extension model. The default value is true.</li>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.propertyGroup">propertyGroup</a> (<a href="#e.property">property</a>+)&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST propertyGroup</p>
<p class=code id=dtdAttlist>displayNameID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>defaultDisplayName&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
(no description available)</p>
<br>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>displayNameID</b> - Resource key for the display name</li>
<li><b>name</b> - Internal unique name of the property group</li>
<li><b>defaultDisplayName</b> - The default display name, which is used if no localized display name is found with I18N.</li>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.method">method</a> (<a href="#e.argument">argument</a> , <a href="#e.javaDoc">javaDoc</a>?)*&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST method</p>
<p class=code id=dtdAttlist>name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>displayNameID&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>toolTipID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>returnType&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>isStatic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) "false"<p class=code id=dtdAttlist>context&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
(no description available)</p>
<br>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>name</b> - Internal unique name of the method</li>
<li><b>displayNameID</b> - Resource key for the display name</li>
<li><b>toolTipID</b> - Resource key for tool-tip of this method</li>
<li><b>returnType</b> - Data type of the method return value</li>
<li><b>isStatic</b> - Field indicating whether this method is static or not</li>
<li><b>context</b> - Execution context of this method</li>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.argument">argument</a> EMPTY&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST argument</p>
<p class=code id=dtdAttlist>name&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>type&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>tagID&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
(no description available)</p>
<br>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>name</b> - Internal unique name of this argument</li>
<li><b>type</b> - Data type of this argument, such as string or integer</li>
<li><b>tagID</b> - Resource key for tag of this argument</li>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.choice">choice</a> EMPTY&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST choice</p>
<p class=code id=dtdAttlist>name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>displayNameID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>defaultDisplayName&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
(no description available)</p>
<br>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>name</b> - Internal unique name of the choice</li>
<li><b>value</b> - Value for this choice</li>
<li><b>displayNameID</b> - Resource key for the display name</li>
<li><b>defaultDisplayName</b> - The default display name, which is used if no localized display name is found with I18N.</li>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.propertyVisibility">propertyVisibility</a> EMPTY&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST propertyVisibility</p>
<p class=code id=dtdAttlist>name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>visibility&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
To set the visible level of this property when it is shown in the property sheet.</p>
<br>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>name</b> - Internal name of the property that is set the visibility.</li>
<li><b>visibility</b> - Two options are: hide, readonly.</li>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.style">style</a> EMPTY&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST style</p>
<p class=code id=dtdAttlist>name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>displayNameID&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
Extension element default style -- selector.</p>
<br>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>name</b> - </li>
<li><b>displayNameID</b> - Resource key for the display name</li>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.elementType">elementType</a> EMPTY&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST elementType</p>
<p class=code id=dtdAttlist>name&nbsp;CDATA #REQUIRED&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
Define all the allowed element types in this slot.</p>
<br>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>name</b> - Name of the element which is allowed in the slot. The name must be consistent with those defined in 'rom.def' or some other reportItem extensions.</li>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.overrideProperty">overrideProperty</a> EMPTY&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST overrideProperty</p>
<p class=code id=dtdAttlist>propertyName&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>allowedChoices&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>useOwnModel&nbsp;&nbsp;&nbsp;&nbsp;(true | false) "false"&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
override allowed units.</p>
<br>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>propertyName</b> - Internal name of the property that is overridden by extension.</li>
<li><b>allowedChoices</b> - units choices that use ',' as seperator. For example: if only allowed 'in' and 'cm' as allowed units, can set it as 'in,cm'.</li>
<li><b>useOwnModel</b> - The proposal of 'useOwnModel' property is to extend the extension schema to allow extended items to 
override some predefined properties such as "onRender","onCreate" property.</li>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.javaDoc">javaDoc</a> (#PCDATA)&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
JavaDoc for the method in CDATA format.</p>
<br><br>
<h6 class=CaptionFigColumn id=header>Examples: </h6>The following is an example of the Report Item extension.
<p>
<pre>

<p class=code id=tag>&lt;extension point=<p class=code id=cstring>&quot;org.eclipse.birt.report.engine.reportitemPresentation&quot;</p><p class=code id=tag>&gt;</p>
     
<p class=code id=tag>&lt;reportItem 
 class=<p class=code id=cstring>&quot;org.eclipse.test.ReportItemFactoryImpl&quot;</p><p class=code id=tag> 
 isNameRequired=<p class=code id=cstring>&quot;true&quot;</p><p class=code id=tag> 
 extensionName=<p class=code id=cstring>&quot;TestingMatrix&quot;</p><p class=code id=tag>
 displayNameID=<p class=code id=cstring>&quot;Element.TestingMatrix&quot;</p><p class=code id=tag>&gt;</p>

<p class=code id=tag>&lt;property 
  defaultValue=<p class=code id=cstring>&quot;default test&amp;amp;&amp;quot;&amp;lt;&quot;</p><p class=code id=tag> 
  type=<p class=code id=cstring>&quot;string&quot;</p><p class=code id=tag> 
  displayNameID=<p class=code id=cstring>&quot;Element.TestingMatrix.test1&quot;</p><p class=code id=tag> 
  name=<p class=code id=cstring>&quot;test1&quot;</p><p class=code id=tag>/&gt;</p>
<p class=code id=tag>&lt;property type=<p class=code id=cstring>&quot;integer&quot;</p><p class=code id=tag> 
  displayNameID=<p class=code id=cstring>&quot;Element.TestingMatrix.test2&quot;</p><p class=code id=tag> 
  canInherit=<p class=code id=cstring>&quot;false&quot;</p><p class=code id=tag> 
  name=<p class=code id=cstring>&quot;test2&quot;</p><p class=code id=tag>/&gt;</p>
<p class=code id=tag>&lt;property
     displayNameID=<p class=code id=cstring>&quot;Element.TestingMatrix.test3&quot;</p><p class=code id=tag>
     name=<p class=code id=cstring>&quot;test3&quot;</p><p class=code id=tag>     
     type=<p class=code id=cstring>&quot;xml&quot;</p><p class=code id=tag>/&gt;</p>     
<p class=code id=tag>&lt;property type=<p class=code id=cstring>&quot;choice&quot;</p><p class=code id=tag> 
  displayNameID=<p class=code id=cstring>&quot;Element.TestingMatrix.test5&quot;</p><p class=code id=tag> 
  canInherit=<p class=code id=cstring>&quot;false&quot;</p><p class=code id=tag> 
  name=<p class=code id=cstring>&quot;test5&quot;</p><p class=code id=tag>&gt;</p>
  <p class=code id=tag>&lt;choice value=<p class=code id=cstring>&quot;one&quot;</p><p class=code id=tag> 
   displayNameID=<p class=code id=cstring>&quot;Choices.test5.choice1&quot;</p><p class=code id=tag> 
   name=<p class=code id=cstring>&quot;choice1&quot;</p><p class=code id=tag>/&gt;</p>
  <p class=code id=tag>&lt;choice value=<p class=code id=cstring>&quot;two&quot;</p><p class=code id=tag> 
   displayNameID=<p class=code id=cstring>&quot;Choices.test5.choice2&quot;</p><p class=code id=tag> 
   name=<p class=code id=cstring>&quot;choice2&quot;</p><p class=code id=tag>/&gt;</p>
  <p class=code id=tag>&lt;choice value=<p class=code id=cstring>&quot;three&quot;</p><p class=code id=tag> 
   displayNameID=<p class=code id=cstring>&quot;Choices.test5.choice3&quot;</p><p class=code id=tag> 
   name=<p class=code id=cstring>&quot;choice3&quot;</p><p class=code id=tag>/&gt;</p>
<p class=code id=tag>&lt;/property&gt;</p>
<p class=code id=tag>&lt;propertyGroup name=<p class=code id=cstring>&quot;group1&quot;</p><p class=code id=tag> 
  displayNameID=<p class=code id=cstring>&quot;Element.TestingMatrix.group1&quot;</p><p class=code id=tag>&gt;</p>
  <p class=code id=tag>&lt;property type=<p class=code id=cstring>&quot;string&quot;</p><p class=code id=tag>
   displayNameID=<p class=code id=cstring>&quot;Element.TestingMatrix.test6&quot;</p><p class=code id=tag>
   name=<p class=code id=cstring>&quot;test6&quot;</p><p class=code id=tag>/&gt;</p>
  <p class=code id=tag>&lt;property type=<p class=code id=cstring>&quot;integer&quot;</p><p class=code id=tag>
   displayNameID=<p class=code id=cstring>&quot;Element.TestingMatrix.test7&quot;</p><p class=code id=tag>
   name=<p class=code id=cstring>&quot;test7&quot;</p><p class=code id=tag>/&gt;</p>
<p class=code id=tag>&lt;/propertyGroup&gt;</p>
  <p class=code id=tag>&lt;propertyVisibility name=<p class=code id=cstring>&quot;bookmark&quot;</p><p class=code id=tag> propertyVisibility=<p class=code id=cstring>&quot;hide&quot;</p><p class=code id=tag>/&gt;</p>
  <p class=code id=tag>&lt;propertyVisibility name=<p class=code id=cstring>&quot;InvalidProperty&quot;</p><p class=code id=tag> propertyVisibility=<p class=code id=cstring>&quot;hide&quot;</p><p class=code id=tag>/&gt;</p>
  <p class=code id=tag>&lt;propertyVisibility name=<p class=code id=cstring>&quot;dataSet&quot;</p><p class=code id=tag> propertyVisibility=<p class=code id=cstring>&quot;readonly&quot;</p><p class=code id=tag>/&gt;</p>
  <p class=code id=tag>&lt;propertyVisibility name=<p class=code id=cstring>&quot;test3&quot;</p><p class=code id=tag> propertyVisibility=<p class=code id=cstring>&quot;hide&quot;</p><p class=code id=tag>/&gt;</p>  
<p class=code id=tag>&lt;/reportItem&gt;</p>
<p class=code id=tag>&lt;/extension&gt;</p>

</pre>
</p>
<p></p>

<h6 class=CaptionFigColumn id=header>API Information: </h6>If the extended Report Item stores properties in its own model; i.e its own way of storing data then it must satisfy the following requirements<br>
- serialize/deserialize as part of the report design file<br>
- support undo/redo<br>
- support generic property sheet<br>
<br>
In order to acheive this, the report item extension must implement some of the interfaces defined in the <i>org.eclipse.birt.report.model.api.extension</i> package. See the package's JavaDoc documentation and API interfaces for more information.<br>
 <br>
The classes/interfaces to be extend/implement are:<br>
- ReportItem ( required )<br>
- ReportItemFactory ( required )<br>
- ElementCommand ( optional, extend this class to suport undo/redo operation ). Extend ElementCommand class and integrate with the command stack in the  IReportItem::setProperty() method implementation<br>
- IPropertyDefinition, IChoiceDefinition ( optional, implement this class to integrate with the generic property sheet in the designer )<br>
- IMessages ( optional, implement this class to support externalized strings )<br>
<p></p>

<h6 class=CaptionFigColumn id=header>Supplied Implementation: </h6>The plugin org.eclipse.birt.chart.reportitem, supplied with the BIRT installation, provides a good example for implementing an report item extension.
<p></p>

<br>
<p class=note id=copyright>
Copyright (c) 2005 Actuate Corporation. All rights reserved. This program and 
the accompanying materials are made available under the terms of the Eclipse 
Public License v2.0 which accompanies this distribution, and is available at 
http://www.eclipse.org/legal/epl-2.0.html

Contributors: Actuate Corporation - initial API and implementation
<p></p>

</p>
</BODY>
</HTML>
